package editorsvg.editor.herramientas.controles;

import editorsvg.editor.formas.Pintable;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;

/**
 *
 * @author Jorge Berjano
 */
public class PuntoControl implements Pintable {
    private Point puntoOrigen;
    private Point puntoExtremo;
    private static final int radio = 3;

    public PuntoControl(Point puntoOrigen) {
        this.puntoOrigen = puntoOrigen;
    }
    
    @Override
    public void pintar(Graphics2D graphics) {
        if (puntoOrigen != null && puntoExtremo != null) {
            graphics.draw(new Line2D.Double(puntoOrigen, puntoExtremo));
            graphics.draw(new Ellipse2D.Double(puntoExtremo.x - radio, puntoExtremo.y - radio, radio * 2, radio * 2));
        }
    }

    public Point getPuntoOrigen() {
        return puntoOrigen;
    }

    public void setPuntoOrigen(Point puntoOrigen) {
        this.puntoOrigen = puntoOrigen;
    }

    public Point getPuntoExtremo() {
        return puntoExtremo;
    }

    public void setPuntoExtremo(Point puntoExtremo) {
        this.puntoExtremo = puntoExtremo;
    }
    
    public PuntoControl opuesto() {
        PuntoControl opuesto = new PuntoControl(puntoOrigen);
        int dx = puntoExtremo.x - puntoOrigen.x;
        int dy = puntoExtremo.y - puntoOrigen.y;
        opuesto.setPuntoExtremo(new Point(puntoOrigen.x - dx, puntoOrigen.y - dy));
        return opuesto;
    }
    
    
    
}
